package util;

import java.util.*;

/**
 * @author Mark
 * @date 2020/6/9 14:32
 * @description List集合操作
 */
public class ListDemo {

    public static void main(String[] args) {

        /*
         * ArrayList和LikeList区别 (查询需要ArrayList 扩容1.5 /增删ListList 扩容0.5)
         * Set和List区别(set三无产品==> 无顺序/无索引/无重复|| List 有顺序/有索引/有重复)
         */
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("1");

        // 根据索引下标移除集合中的值(2)
        System.out.println("list.remove(1) = " + list.remove(1));

        // list中是否包含字符串"1"(true)
        System.out.println("list.contains(\"1\") = " + list.contains("1"));

        // list的大小(4)
        System.out.println("<<<<<<list.size()>>>> : " + list.size());

        // 遍历list(增强for)
        for (String s : list) {
            System.out.println(s);
        }

        // Iterator迭代器循环
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println("next = " + next);
        }

        // forEach循环
        list.forEach(s -> System.out.println("s = " + s));

        System.out.println("#####################################");

        List<String> linkedList = new LinkedList<>();
        linkedList.add("linkedList1");
        linkedList.add("linkedList2");
        linkedList.add("linkedList3");
        linkedList.add("linkedList3");

        // 获取第一个list中的元素
        System.out.println("linkedList.get(0) = " + linkedList.get(0));

        // 移除第一个元素(下标从0开始)
        linkedList.remove(1);
        for (String s : linkedList) {
            System.out.println(s);
        }

        System.out.println("#####################################");

        // 不能存储重复元素(idea默认会有提示)
        Set<String> stringSet = new TreeSet<>();
        stringSet.add("stringSet1");
        stringSet.add("stringSet2");
        stringSet.add("stringSet3");
        stringSet.add("stringSet1");

        // 不能存储重复(数据)lambda表达式
        stringSet.forEach(System.out::println);

        // 增强for循环遍历
        for (String s : stringSet) {
            System.out.println("s = " + s);
        }

        System.out.println("#####################################");
        // 不能存储重复元素(idea默认会有提示)
        Set<String> h = new HashSet<>();
        h.add("stringSet1");
        h.add("stringSet2");
        h.add("stringSet3");
        h.add("stringSet1");

        // lambda循环遍历表达式
        h.forEach(System.out::println);

        // 增强for循环遍历
        for (String s : h) {
            System.out.println("s = " + s);
        }

        // 迭代器遍历
        Iterator<String> iterator1 = h.iterator();
        while (iterator1.hasNext()) {
            System.out.println("iterator.next() = " + iterator1.next());

            // 移除元素之后不能进行遍历
            iterator1.remove();
            System.out.println(iterator1);
        }
    }
}
